#ifndef SERVER_H
#define SERVER_H

#include <QObject>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>
#include <QVector>
#include <QJsonDocument>
#include "message.h"

// Server 类负责管理 TCP 服务器和客户端连接
class Server : public QObject
{
    Q_OBJECT

public:
    explicit Server(QObject *parent = nullptr); // 构造函数

    void startServer(); // 启动服务器
    void stopServer(); // 关闭服务器
    void sendMessageToClients(const Message &message); // 向所有连接的客户端发送消息

signals:
    void serverStarted(); // 服务器启动成功的信号
    void serverError(const QString &error); // 服务器错误信号

public slots:
    void newClientConnection(); // 处理新的客户端连接
    void socketDisconnected();   // 处理客户端断开连接
    void socketReadyRead();      // 处理客户端发送的消息
    void socketStateChanged(QAbstractSocket::SocketState state); // 处理客户端网络状态变化

private:
    QTcpServer *chatServer; // QTcpServer 对象，用于监听和接受客户端连接
    QVector<QTcpSocket*> allClients; // 存储所有连接的 QTcpSocket 对象的数组
};

#endif // SERVER_H
